<?php
defined('PATH') or exit('Access Denied');
/**
 * 读取配置
 * @param String $param
 */
function C($param=NULL) {
	if(file_exists(_PATH_."/Data/sys.inc.php")){
		$sysconf=include(_PATH_."/Data/sys.inc.php");
	}else{
		new appException("找不到系统配置文件 sys.inc.php");
		return;
	}

	if(file_exists(_PATH_."/Data/common.inc.php")){
		$commonconf=include(_PATH_."/Data/common.inc.php");
	}
	$sysconf=$GLOBALS['SYSCONF'];
	$commonconf=$GLOBALS['CONF'];
	if (empty($param)){
		return $sysconf;
	}else{
		if (isset($commonconf[$param])){
			return $commonconf[$param];
		}else{
			if (isset($sysconf[$param])){
				return $sysconf[$param];
			}else{
				return "ERROR";
			}
		}
	}
}
/**
 * 防SQL注入
 * @param unknown_type $array
 */
function SqlIn($instr){
	$array='';
	if (!is_array($array)){
		if (strpos($instr, "|")){
			$array=explode("|", $instr);
		}else{
			$array=explode(".", $instr);
		}
	}else{
		$array=$instr;
	}

	foreach ($_REQUEST as $key=>$val){
		foreach ($array as $value){
			if (stripos($val, $value)){
				//$_REQUEST[$key]=str_replace($k, $v, $val);
				exit("提交非法字符".$val.'_'.$value);
			}

		}
	}
	foreach ($_POST as $key=>$val){
		foreach ($array as $value){
			if (stripos($val, $value)){
				//$_POST[$key]=str_replace($k, $v, $val);
				exit("提交非法字符".$val);
			}

		}
	}
	foreach ($_GET as $key=>$val){
		foreach ($array as $value){
			if (stripos($val, $value)){
				//$_GET[$key]=str_replace($k, $v, $val);
				exit("提交非法字符".$val);
			}

		}
	}
	foreach ($_COOKIE as $key=>$val){
		foreach ($array as $value){
			if (stripos($val, $value)){
				//$_COOKIE[$key]=str_replace($k, $v, $val);
				exit("提交非法字符".$val);
			}

		}
	}
}
/**
 函数作用：检测提交的值是不是含有SQL注射的字符，防止注射，保护服务器安全
 参        数：$sql_str: 提交的变量
 返 回 值：返回检测结果，ture or false
 函数作者：heiyeluren
 */
function in_check($sql_str)
{
	return preg_match('@select|insert|update|delete|union|into|load_file|outfile@i',$sql_str);
}
/**
 *函数作用：校验提交的ID类值是否合法
 *@param 参        数：$id: 提交的ID值
 *@return 返 回 值：返回处理后的ID
 *@access heiyeluren
 */
function verify_id($id=null)
{
	if (!$id) {new appException("'没有提交参数！'");}    // 是否为空判断
	elseif (in_check($id)) {new appException('提交的参数非法！');}    // 注射判断
	elseif (!is_numeric($id)) {new appException('提交的参数不能作为ID！'); }    // 数字判断
	$id = intval($id);    // 整型化
	return  $id;
}
/**
 * 函数作用：对提交的字符串进行过滤
 * @param $str: 要处理的字符串
 * @return 返回过滤后的字符串
 * @access 8eoo.com
 */
function str_check( $str )
{
	if (!get_magic_quotes_gpc())
	{
		$str = addslashes($str);
	} 
	$str = str_replace("%", "\%", $str);
	return $str;
}
/**
 * 函数作用：对提交的编辑内容进行处理
 * @param $post: 要提交的内容
 * @return $post: 返回过滤后的内容
 * @access 8eoo.com
 */
function post_check($post)
{
	if (!get_magic_quotes_gpc())
	{
		$post = addslashes($post);
	}
	$post = str_replace("_", "\_", $post);
	$post = str_replace("%", "\%", $post);
	$post = nl2br($post);
	$post= htmlspecialchars($post);

	return $post;
}
/**
 * 实例化一个模型
 * @param string $name 模型名;不需要加Model
 */
function Model($name){
	$name.="Model";
	return new $name();
}
/**
 * 获得浏览者IP
 */
function getIp(){
	if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "127.0.0.1"))
	$ip = getenv("HTTP_CLIENT_IP");
	else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "127.0.0.1")){
		$ip = getenv("HTTP_X_FORWARDED_FOR");
		list($ip)=explode(",",$ip);
	}
	else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "127.0.0.1"))
	$ip = getenv("REMOTE_ADDR");
	else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "127.0.0.1"))
	$ip = $_SERVER['REMOTE_ADDR'];
	else
	$ip = "127.0.0.1";
	return($ip);
}
/**
 * URL处理
 * @param unknown_type $params
 */
function url($params){
	global $SID,$ACT,$ACTVAL,$METHOD,$METVAL;
	$actval;$metval;
	$_S=C('SID');
	$SID=isset($params[$_S])?$params[$_S]:$SID;
	//$CTRL=($params['CTRL'])?($params['CTRL'].".php"):$GLOBALS['CTRL'];
	$actval=isset($params[$ACT])?$params[$ACT]:$ACTVAL;
	$metval=isset($params[$METHOD])?$params[$METHOD]:$METVAL;
	if (C('URL_TYPE')==1){
		@$s=$_SERVER[SCRIPT_NAME]."?{$ACT}=".$actval."&amp;{$METHOD}=".$metval."&amp;";
	}elseif(C('URL_TYPE')==2){
		@$s=$_SERVER[SCRIPT_NAME]."/".$actval."/".$metval."?";
	}
	$args=array();
	foreach ($params as $key => $value) {
		if (is_array($value)) {
			$args =$value;
			unset($params[$key]);
		}
	}
	$args = array_merge($args, $params,array($_S=>$SID));
	// var_dump($args);
	$ua=Array();
	foreach ($args as $k => $v) {
		if(!empty($v)){
			if ($k==$ACT || $k==$METHOD){}

			else
			$ua[]="$k=$v";
		}
	}

	// var_dump($ua);
	$s.=join('&amp;',$ua);

	return $s;
}
/**
 * 模板中URL处理
 * @param unknown_type $params
 * @param unknown_type $smarty
 */
function _smarty_function_url($params, &$view){
	return url($params);
}


/**
 * 读取语言包文件
 * @param unknown_type $name
 * @param unknown_type $value
 * @throws Exception
 */
function L($name,$value=''){
	global $lang_com,$lang;
	if ($name)$name=strtoupper($name);

	if (@$lang[$name]){
		return $lang[$name];
	}else{
		if (isset($lang_com)){
			return @$lang_com[$name];
		}else{
			return $name;
		}
	}
}
/**
 * 获得当前用户所选语言
 */
function getLang(){
	$lang;
	if (isset($_GET['lang']))$lang=$_GET['lang'];
	if (empty($lang) && !empty($_COOKIE['lang']))$lang=$_COOKIE['lang'];
	if (empty($lang) && !empty($_SESSION['lang']))$lang=$_SESSION['lang'];
	if (empty($lang)){
		$lang=isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])?$_SERVER['HTTP_ACCEPT_LANGUAGE']:'zh-CN,zh;q=0.9,en;q=0.8';
		$lang=strtolower($lang);
		$lang=explode(",", $lang);
		$lang=$lang[0];
	}
	if (isset($_GET['lang'])){
		if (strlen($_GET['lang'])==5){
			if ($_COOKIE['lang']!=$_GET['lang']){
				setcookie("lang",$_GET['lang'],null,"/");
			}
			$_SESSION['lang']=$_GET['lang'];
		}
	}
	if (empty($lang))$lang='zh-cn';
	return $lang;
}
/**
 * 设置语言 在HTML模板中使用
 */
function setLang($language){
	$url="http://".$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];
	if (stripos($url,"?")){
		if (stripos($url, "lang")){
			$url=str_replace("lang=".$_GET['lang'], "lang=".$language, $url);
		}else{
			$url.="&lang=".$language;
		}
	}else{
		$url.="?lang=".$language;
	}
	return $url;
}
/**
 * 设置URL中指定参数的值
 * @param $param 参数名
 * @param $value 值
 */
function setUrl($param,$value){
	$url="http://".$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];
	if (stripos($url,"?")){
		if (stripos($url, $param)){
			$url=str_replace($param.$_GET[$param], "$param=".$value, $url);
		}else{
			$url.="&$param=".$value;
		}
	}else{
		$url.="?$param=".$value;
	}
	return $url;
}
//////////////////////////////////////////////////////////////////
/**
 *获得当前控制器
 */
function getAction(){
	$action=url_r();
	return $action[0];
}

function getMotHod(){
	$action=url_r();
	return $action[1];
}

/**
 * 控制器地址处理
 * Enter description here ...
 */
function url_r(){
	global $ACTVAL,$METVAL;
	$url=$_SERVER['REQUEST_URI'];
	if (preg_match('/([.]php\/[a-zA-Z])/i',$url)){
		$a=explode(".php/", $url);
		if (count($a)>0){
			$act=$a[1];
			if (stripos($act,"?")){
				$tmp=explode("?",$act);
				$a[1]=$tmp[0];
			}
			$act=explode("/", $a[1]);

			if (!isset($act[1]) || !preg_match('/^[a-zA-Z]/i', $act[1])){
				$act[1]="index";
			}
		}else{
			$act[0]="index";$act[1]="index";
		}
	}else{
		$act[0]="index";$act[1]="index";
	}
	$ACTVAL=$act[0];$METVAL=$act[1];
	return $act;
}

function url_g(){
	global $ACT,$ACTVAL,$METVAL,$MET;
	$ACT=C('ACT');
	$MET=C('METHOD');

	isset($_GET[$ACT])?$ACTVAL=$_GET[$ACT]:"index";
	isset($_GET[$MET])?$METVAL=$_GET[$MET]:"index";

	return array($ACTVAL,$METVAL);
}
//////////////////////////////////////////////////////////////////////
/**
 * 循环检测并创建文件夹
 * @param $path 文件夹路径
 * @return void
 */
function createDir($path){
	if (!file_exists($path)){
		createDir(dirname($path));
		mkdir($path, 0777);
	}
}
////////用户区函数//////////////////////
function getInf($params=null){
	$info=isset($_SESSION['TK_USER'])?$_SESSION['TK_USER']:array();
	if (empty($params))return $info;
	if (isset($info[$params])){
		return $info[$params];
	}else{
		return NULL;
	}
}
/**
 * 取得当前SID
 * @param $type 当值为TRUE时 返回 $_SID=$SID形式
 */
function getSid($type=false){
	global $SID,$_SID;
	if ($type){
		RETURN $_SID.'='.$SID;
	}
	RETURN $SID;
}
/**
 * 获得当前URL地址
 * 当$type=true 时去掉地址中的SID信息 默认为true
 */
///////////////////////////////////
function getUrl($type=true){
	global $SID,$_SID;
	$url = $_SERVER['REQUEST_URI'];
	if ($type){
		if (stripos($url,"?".$_SID)){
			$url=str_replace("?".$_SID."=".$SID,"", $url);
		}elseif (stripos($url, "&".$_SID)) {
			$url=str_replace("&".$_SID."=".$SID,"", $url);;
		}
	}
	return str_replace('&', '&amp;',$url);
}
/**
 * 用base64 编码 URL
 * @param string $url
 */
function enUrl($url){
	return base64_encode($url);
}
/**
 * 解码url并向URL中添加SID信息
 * @param unknown_type $url
 */
function deUrl($url){
	global $SID,$_SID;
	$url=base64_decode($url);
	if (!stripos($url,$_SID)){
		if (stripos($url, "?")){
			$url.="&".$_SID."=".$SID;
		}else{
			$url.="?".$_SID."=".$SID;
		}
	}
	return str_replace("&", "&amp;", $url);
}
/**
 * 获取毫秒
 * Enter description here ...
 */
function micro_timer(){
	$timer=microtime();
	$temp=explode(" ", $timer);
	$timer=$temp[0];
	unset($temp);
	return ceil($timer*1000);
}
/**
 * 计算两个毫秒之间的差
 * @param int $one
 * @param int $two
 */

function max_micro($one,$two){
	if ($one>$two){
		return $one-$two;
	}elseif ($one<$two){
		return $one+1000-$two;
	}else{
		return 0;
	}
}



function getTemplate(){
	$tempconf=$GLOBALS['TEMPCONF'];
	$ua=$_SERVER['HTTP_USER_AGENT'];
	foreach ($tempconf as $key=>$val){
		if($val[1]!=""){
                  if (preg_match("@{$val[1]}@i", $ua)){
				$template=$key;
				break;
			}
		}else{
			$template=$key;
		}
	}
        return "3g";
	return $template;	
}

function towml($str){
	$str=str_replace('<', '&lt;', $str);
	$str=str_replace('>', '&gt;', $str);
	$str=str_replace('©', '&copy;', $str);
	$str=str_replace('ͳ', '', $str);
	$str=str_replace('ϵ', '', $str);
	$str=str_replace('&', '&amp;', $str);
	return $str;
}

function qstr($s){
    return str_replace("'","''",$s);
}

function get_version(){
    $version = array(
        'DATE'=>'2013-03-26',
        'RC'=>'0.1.1',
        'IV'
    );
    if(file_exists(DATA.'version.inc')){
        @$lines = file(DATA.'version.inc');
        @$version['DATE'] = $lines[1];
        @$ver = explode('-',$lines[0]);
        $version['RC'] = $ver[0];
        $version['IV'] = $ver[1];
    }
    return $version;
}

function getPhoneType($phone){
	$pm=substr($phone, 0,3);
	$dx="133|153|189|180";
	$lt="130|131|132|155|156|186";
	$yd="139|138|137|136|135|134|157|158|159|150|151|152|182|183|187|188|147";
	if(preg_match('@'.$dx.'@i', $pm)){
		$rt='N';
	}elseif(preg_match('@'.$lt.'@i', $pm)){
		$rt='U';
	}elseif(preg_match('@'.$yd.'@i', $pm)){
		$rt='M';
	}else {
		$rt='UNDEFINED';
	}

	return $rt;
}

function checkmobile() {
	$mobile = array();
	static $mobilebrowser_list =array('iphone', 'android', 'phone', 'mobile', 'wap', 'netfront', 'java', 'opera mobi', 'opera mini',
			'ucweb', 'windows ce', 'symbian', 'series', 'webos', 'sony', 'blackberry', 'dopod', 'nokia', 'samsung',
			'palmsource', 'xda', 'pieplus', 'meizu', 'midp', 'cldc', 'motorola', 'foma', 'docomo', 'up.browser',
			'up.link', 'blazer', 'helio', 'hosin', 'huawei', 'novarra', 'coolpad', 'webos', 'techfaith', 'palmsource',
			'alcatel', 'amoi', 'ktouch', 'nexian', 'ericsson', 'philips', 'sagem', 'wellcom', 'bunjalloo', 'maui', 'smartphone',
			'iemobile', 'spice', 'bird', 'zte-', 'longcos', 'pantech', 'gionee', 'portalmmm', 'jig browser', 'hiptop',
			'benq', 'haier', '^lct', '320x320', '240x320', '176x220','240*320','176*220','320*320','smsmao','tk_mao',
			'tkmobile','tianku mobile','mqqbrowser','mtk','mt[\d+]','opera');
	$pad_list = array('pad', 'gt-p1000');

	$useragent = strtolower($_SERVER['HTTP_USER_AGENT']);

	if(dstrpos($useragent, $pad_list)) {
		return false;
	}
	if(($v = dstrpos($useragent, $mobilebrowser_list, true))) {
		return true;
	}
	$brower = array('mozilla', 'chrome', 'safari', 'm3gate', 'winwap', 'openwave', 'myop');
	if(dstrpos($useragent, $brower)) return false;


	if($_GET['mobile'] === 'yes') {
		return true;
	} else {
		return false;
	}
}

function dstrpos($string, &$arr, $returnvalue = false) {
	if(empty($string)) return false;
	foreach((array)$arr as $v) {
		if(strpos($string, $v) !== false) {
			$return = $returnvalue ? $v : true;
			return $return;
		}
	}
	return false;
}
